'user strict'

const UserModel = require('../model/user');
const { catchErr, responseErrMessage, responceSuccessMessage } = require('../utils/http_response');

class User {

    constructor() {
        // 初始化的内容
    }
    // 通过userName获取用户信息
    async getUserInfo(req, res) {
        // trycatch 用在代码易发生错误的地方， 并且捕获错误 打印日志
        try {
            const { userName } = req.query;
            // 这里可以做容错如果没传userName怎么办? 500
            if (!userName) res.json(responseErrMessage('请传递正确的参数'));
            const userInfo = await UserModel.getUserInfo(userName);
            // 这里也可以做逻辑，如果没这个人怎么返回？ 200
            if (!userInfo) res.json(responceSuccessMessage(null, '无此用户名'))
            res.json(responceSuccessMessage(userInfo));
        } catch (_) {
            res.json(catchErr(_));
        }
    }

    // 通过姓来查找多用户信息
    async getUserInfoByLastName(req, res) {
        try {
            const { lastName } = req.body;
            if (!lastName) res.json(responseErrMessage('请传递正确的参数'));
            const usersIfno = UserModel.getUserInfoByLastName(lastName);
            if (!userInfo.length) res.json(responceSuccessMessage(null, `没有姓${lastName}的用户`));
            res.json(responceSuccessMessage(usersIfno));
        } catch (_) {
            res.json(catchErr(_));
        }
    }

    // 新增用户信息
    async addUser(req, res) {
        try {
            // 假设这里的需求是用户名，密码，必传，其他可以选择传入
            const { userName, passworld } = req.body;
            if (!userName || !passworld) res.json(responseErrMessage('请传递正确的参数'));

            const res = UserModel.addUser(req.body);

            if (res) {
                res.json(responceSuccessMessage(usersIfno, '新增用户成功!'));
            }
            res.json(responseErrMessage('添加用户失败!'));
        } catch (_) {
            res.json(catchErr(_));
        }
    }

    static getInstance () {
        if (User.instance) {
            return User.instance;
        } else {
            User.instance = new User();
            return User.instance;
        }
    }

}


module.exports = User.getInstance();